# List列表
li = [1, 2, ['c', 'd'], 'a', 'f', True]

print(li[2])  # 索引取值
print(li[2:])  # 切片取值
print(li[2:-1])  # 切片取值，索引值2开始直到倒数第二个

print([i + 1 for i in li[0: 2]])  # 切片第一和第二个值+1

print('------------------------------增删改查-------------------------------')
# 增加元素
li.append('x')
print(li)

# 指定位置插入元素
li.insert(5, False)
print(li)

# 批量增加元素，遍历对象元素增加
li.extend(['c', 345])
li.extend('你好吗')  # 遍历字符串每个字符增加
print(li)

# 删除元素，第一种方式
del li[2][0]  # 删除'c'
print(li)

# 出栈，可以获取被删除的元素，默认出栈最后一个元素
print('出栈索引位置1的元素', li.pop(1))

# 删除，无法获取被删除的元素
li.remove('f')
print('删除字符f后的列表：', li)

# 修改元素
li[0:2] = ['a', [5, 6]]
print(li)

# 查找元素，嵌套的列表元素无法查找
print('布尔值True的索引值：', li.index(True))

# 反转元素
li.reverse()
print('反转列表元素：', li)

# 排序
sort_li = [2, 5, 1, 6, 4, 9, 0]
sort_li.sort()
print('递增排序：', sort_li)
sort_li.sort(reverse=True)
print('递减排序：', sort_li)

print('------------------------------------------------------------')

# 字符串转换为列表,数字却不可以，能够被for遍历的对象才能转换，基本数据类型不行
s = '今天天气真凉快！'
print(list(s))

# 字符串转化为列表,使用str()其实就是在整体转换，也就是'[1, 2, 3, 'a', 'b', 'c']',而不是一个字符串
li1 = [1, 2, 3, 'a', 'b', 'c']
print(str(li1))

# 如果列表中同时存在数值和字符串，则用for
for i in li1:
    s += str(i)
print(s)

# 如果列表中只存在字符串，join()
li2 = ['a', 'b', 'c']
print(''.join(li2))

# 浅拷贝
new_list = li.copy()
print(new_list)

# 统计某元素个数
print(li.count('a'))  # 2个'a'
